package cn.com.anypay.manager.miaoma.suantaiqrcode.handler;

import cn.com.anypay.manager.miaoma.suantaiqrcode.SuantaiQrcodeEntity;
import cn.com.anypay.manager.common.response.ApiResponse;

/**
 * 二维码处理器接口
 *
 * 遵循开闭原则，每种二维码类型实现此接口
 * 新增类型时只需要新增对应的Handler实现类
 */
public interface QrCodeHandler {

    /**
     * 处理二维码扫码逻辑
     *
     * @param qrcode 二维码实体
     * @param id 二维码ID
     * @return 统一的API响应，包含跳转信息或数据
     */
    ApiResponse<Object> handle(SuantaiQrcodeEntity qrcode, String id);

    /**
     * 处理二维码扫码逻辑（网关模式）
     * 返回结构化数据供前端网关处理
     *
     * @param qrcode 二维码实体
     * @param id 二维码ID
     * @return 包含网关响应数据的API响应
     */
    default ApiResponse<Object> handleForGateway(SuantaiQrcodeEntity qrcode, String id) {
        // 默认实现：调用原有的handle方法
        return handle(qrcode, id);
    }

    /**
     * 获取处理器支持的二维码类型
     *
     * @return 二维码类型值
     */
    Integer getSupportedType();

    /**
     * 获取处理器名称，用于日志记录
     *
     * @return 处理器名称
     */
    String getHandlerName();
}